package com.iris.live.services.data.repositories;

import com.iris.live.services.data.models.Lsh车型Model;
import com.iris.live.services.data.models.PushApprovalWorkFlowModel;
import com.iris.live.services.models.PageData;
import com.iris.live.services.services.ApprovalService;
import com.iris.live.services.services.SetService;

import java.util.List;
import java.util.Map;

/**
 * 表ORM
 */
public interface PushApprovalWorkFlowRepository {
    PageData getPrivilegeForCarModel(String carBrand, String carClass, String carModel, Integer size, Integer index);

    PageData getPrivilegeForCarModelDealer(String dlr, String carBrand, String carClass, String carModel, Integer size, Integer index);
    /**
     * 展示审批流程
     */
    List getApprovalList(String type, String permit, String quotedPriceCodeOrVIN);

    List<PushApprovalWorkFlowModel> constructWorkFlowModelList(String permit, Integer type, String id);

    /**
     * 订单审批list
     */
    PageData getOrderApprovalList(int pageSize,
                                  int pageIndex, String type,
                                  String permit, String userName,
                                  ApprovalService.GetApprovalListRequest reqeust);


    List getCarTypeList(ApprovalService.GetApprovalListRequest reqeust);

    /**
     * 获取snp
     */
    List getSNP(String carCode, String apperanceCode, String quotedPriceCode);

    /**
     * 获取GP
     */
    List<Map> getGP(String dealer, Integer quoNum);

    /**
     * 获取GP4.5
     */
    List getGp4d5(Integer qNum);

    /**
     * 资源释放
     */
    PageData getRelease(int pageSize, int pageIndex, String permit);

    /**
     * 手动的资源释放发消息时，需要的信息
     */
    List<Map> getInfo4ManualRelease(int kucunNo);

    /**
     * 自动的资源释放
     */
    List<Map> getAutoRelease(String virtualStockPref);

    /**
     * 资源释放的提醒
     */
    List<Map> getAutoRelease4Notice(String virtualStockPref);

    /**
     * 重复接待仲裁
     */
    PageData getReArbitrate(int pageSize, int pageIndex, String permit);


    List getNotReArbitrateTest(String permit);

    List getBaseReArbitrateTest(int Noid);

    PageData getSaleAdminCheckList(String permit, String username, ApprovalService.GetSaleAdminCheckList getSaleAdminCheckList);


    /**
     * 查询仲裁详情
     */
    Map getReArbitrateDetail(String permit, String saleManA, String saleManB, String id);

    int updateReArbitrateDetail(ApprovalService.UpdateReArbitrateDetail req);

    Map postReArbitrate(ApprovalService.UpdateReArbitrateDetail req);

    Double preContractSnpProcess(Integer quotedPriceCode);

    /**
     *
     */
    List showCarTransferLog(String permit, String VIN);

    // 这是  拿到 上一次的 报价编号
    List findLastBianhaoDetail(int ids);

    List findLastBianhao(int ids);

    // 这是 拿到 新增的 报价编号 对应的 所有的 _精品的 List
    List findValueModelList(int ids);

    List findValueModelListis(int ids);

    List findLastModelListis(String ids);

    Integer getValidQuotedPriceCode(Integer quotedPriceCode);

    String getBugAndLshItask(String chushibaojia);

    List findNotRepeatReArbByPTel(String permit, String tel, String scman, String cid, String failMan);

    List getAfterMarkOrderList(String oid);

    PageData reviewContractApproval(ApprovalService.ReviewContractApprovalRequest req, String permit);

    List reviewContractApprovalDetail(Integer id);

    PageData FinanceDepositCheckList(SetService.inOutAccountRequest re, String permit);

    // 根据初始报价单号，查找退票审批记录
    List<PushApprovalWorkFlowModel> getRefundRecordByInitQuotationNum(String initQuotationNum);

    // 根据指定的报价单，获得所有的车型
    List<Lsh车型Model> getCarTypeByQuotationNums(Integer startQuotationNum, Integer endQuotationNum);

    /**
     * 查找指定范围内、指定类型的订单审批记录
     * @param initQuotationNum 初始报价单号
     * @param type 审批类型
     * @param startQuotationNum 开始报价编号
     * @param endQuotationNum 结束报价编号
     * @return
     */
    List<PushApprovalWorkFlowModel> getApprovalRecordByCondition(String initQuotationNum,int type,Integer startQuotationNum,Integer endQuotationNum);

    /**
     * 获取指定报价编号之前的修改订单或者意向订单的审批记录
     * @param quotationNum 报价编号
     * @param initQuotationNum 初始报价编号
     * @return
     */
    List<PushApprovalWorkFlowModel> getBeforeModifyOrderApprovalRecord(Integer quotationNum,String initQuotationNum);


    /**
     * 导出商务审批政策
     * @param carBrand
     * @param carClass
     * @param carModel
     * @param size
     * @param index
     * @return
     */
    PageData exportPrivilegeForCarModel(String carBrand, String carClass, String carModel, Integer size, Integer index);



    // 根据用户名和审批状态查找审批记录
    List<PushApprovalWorkFlowModel> getApprovalRecordByUserNameAndStatus(String userName,String status);
}
